package GUI;

import java.sql.Time;
import java.util.Date;
import java.util.Scanner;

import ClassesBasicas.Agenda;
import ClassesBasicas.Atendente;
import ClassesBasicas.ITipoPessoa;
import ClassesBasicas.Paciente;
import Excecao.AgendaExistenteException;
import Excecao.AgendaInexistenteException;
import Excecao.PessoaInexistenteException;
import Negocio.Fachada;

public class MenuAgenda implements ITipoPessoa {
	
	
	
	public static void telaAgenda() throws AgendaExistenteException, PessoaInexistenteException, AgendaInexistenteException{
		Scanner opcao = new Scanner(System.in);
		int op;
		do {
			System.out.println("                                             __________________________________________________________");
			System.out.println("");
			System.out.println("                                                        # SISTEMA DE PRONTUARIO ELETRONICO #");
			System.out.println("                                             __________________________________________________________");
			System.out.println("");
			System.out.println("");
			System.out.println("                                                              MENU CADASTRO AGENDA");
			System.out.println("");
			System.out.println("                                                      Inserir..................................1");
			System.out.println("                                                      Remover..................................2");
			System.out.println("                                                      Consultar................................3");
			System.out.println("                                                      Alterar..................................4");
			System.out.println("                                                      Voltar...................................0");
			System.out.println("");
			System.out.println("");
			System.out.print("                                                     > Selecione sua opcao:");
			op = opcao.nextInt();
			if (op ==1){
				inserirAgenda();
			}else if (op == 2){
				excluirAgenda();
			}else if (op ==3){
				consultarAgenda();
			}else if (op ==4){
				atualizarAgenda();
			}else{
				System.out.println("                                                   Opcao Invalida! Favor Digitar Novamente.");
			}
		}while (op!=0);
	}

	@SuppressWarnings("deprecation")
	public static void inserirAgenda() throws AgendaExistenteException, PessoaInexistenteException{
		Scanner opcao = new Scanner(System.in);
		System.out.println("                                             __________________________________________________________");
		System.out.println("");
		System.out.println("                                                        # SISTEMA DE PRONTUARIO ELETRONICO #");
		System.out.println("                                             __________________________________________________________");
		System.out.println("");
		System.out.println("");
		System.out.println("                                                                      INSERIR");
		System.out.println("");
		System.out.print("                                                            Codigo do Paciente:");
		String codPac = opcao.nextLine();
		System.out.print("                                                            Codigo do Atendente:");
		String codAtend = opcao.nextLine();
		System.out.print("                                                            Data da Agenda:");
		String data = opcao.nextLine();
		System.out.print("                                                            Horario (hh:mm:ss):");
		String horario = opcao.nextLine();
		
		int hour=Integer.parseInt(horario.substring(0,2));
		int minute=Integer.parseInt(horario.substring(2,4));
		int second=Integer.parseInt(horario.substring(4,6));
		
		int dia = Integer.parseInt(data.substring(0,2));
		int mes = Integer.parseInt(data.substring(2,4));
		int ano = Integer.parseInt(data.substring(4,8));
		
		Date date = new Date();
		date.setDate(dia);
		date.setMonth(mes);
		date.setYear(ano);
		Time time = new Time(hour, minute, second);
		Fachada f1 = Fachada.obterInstancia(); 
		Atendente atendente = (Atendente) f1.procurar(codAtend, ATENDENTE);
		Paciente paciente = (Paciente) f1.procurar(codPac, PACIENTE);
		Agenda agenda = new Agenda();
		agenda.setAtendente(atendente);
		agenda.setData(date);
		agenda.setHora(time);
		agenda.setPaciente(paciente);
		
		try {
			f1.cadastrarAgenda(agenda);
			System.out.println("Agenda Inserido com Sucesso!");

		}catch (AgendaExistenteException ex) {
			System.err.println(ex);
		}
	}

	public static void excluirAgenda() throws AgendaInexistenteException{
		Scanner opcao = new Scanner(System.in);
		System.out.println("                                             __________________________________________________________");
		System.out.println("");
		System.out.println("                                                        # SISTEMA DE PRONTUARIO ELETRONICO #");
		System.out.println("                                             __________________________________________________________");
		System.out.println("");
		System.out.println("");
		System.out.println("                                                                        EXCLUIR");
		System.out.print("");
		System.out.println("                                                            Digite o codigo referente:");
		String cod = opcao.nextLine();
		Fachada f1 = Fachada.obterInstancia();
		f1.removerAgenda(Integer.parseInt(cod));
		System.out.println("Agenda removida com sucesso!");
	}


	public static void consultarAgenda(){
		Scanner opcao = new Scanner(System.in);
		System.out.println("                                             __________________________________________________________");
		System.out.println("");
		System.out.println("                                                        # SISTEMA DE PRONTUARIO ELETRONICO #");
		System.out.println("                                             __________________________________________________________");
		System.out.println("");
		System.out.println("");
		System.out.println("                                                                     CONSULTAR");
		System.out.println("");
		System.out.print("                                                            Digite o codigo referente:");
		String cod = opcao.nextLine();

		try {
			Agenda agenda = Fachada.obterInstancia().procurar(Integer.parseInt(cod));

			System.out.print("                                                            Atendente:");
			System.out.println(agenda.getAtendente().getNome());
			System.out.print("                                                            Paciente:");
			System.out.println(agenda.getPaciente().getNome());
			System.out.print("                                                            Data:");
			System.out.println(agenda.getData());
			System.out.print("                                                            Codigo:");
			System.out.println(agenda.getCodigo());
		} catch (AgendaInexistenteException e) {
			System.err.println(e);
		}
	}

	@SuppressWarnings("deprecation")
	public static void atualizarAgenda() throws PessoaInexistenteException{
		Scanner opcao = new Scanner(System.in);
		System.out.println("                                             __________________________________________________________");
		System.out.println("");
		System.out.println("                                                        # SISTEMA DE PRONTUARIO ELETRONICO #");
		System.out.println("                                             __________________________________________________________");
		System.out.println("");
		System.out.println("");
		System.out.println("                                                                      INSERIR");
		System.out.println("");
		System.out.print("                                                            Codigo do Paciente:");
		String codPac = opcao.nextLine();
		System.out.print("                                                            Codigo do Atendente:");
		String codAtend = opcao.nextLine();
		System.out.print("                                                            Data da Agenda:");
		String data = opcao.nextLine();
		System.out.print("                                                            Horario (hh:mm:ss):");
		String horario = opcao.nextLine();
		
		int hour=Integer.parseInt(horario.substring(0,2));
		int minute=Integer.parseInt(horario.substring(2,4));
		int second=Integer.parseInt(horario.substring(4,6));
		
		Date date = new Date(data);
		Time time = new Time(hour, minute, second);
		Fachada f1 = Fachada.obterInstancia(); 
		Atendente atendente = (Atendente) f1.procurar(codAtend, ATENDENTE);
		Paciente paciente = (Paciente) f1.procurar(codPac, PACIENTE);
		Agenda agenda = new Agenda();
		agenda.setAtendente(atendente);
		agenda.setData(date);
		agenda.setHora(time);
		agenda.setPaciente(paciente);
		
		try {

			f1.atualizar(agenda);
			System.out.println("Agenda Inserido com Sucesso!");

		}catch (AgendaInexistenteException ex) {
			System.err.println(ex);
		}
	}
}


